package com.hsh.erp.utils;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Slf4j
@Component
public class JsonUtils {


    private final ObjectMapper objectMapper;

    @Autowired
    public JsonUtils(ObjectMapper objectMapper) {
        this.objectMapper = objectMapper;
    }




    /**
     * 将对象转换为JSON字符串。
     * 不抛出异常的转换方法，内部处理异常
     *
     * @param obj
     * @return
     */
    public String toJson(Object obj) {
        try {
            return toJsonString(obj);
        } catch (JsonProcessingException e) {
            // 这里可以选择记录日志、抛出自定义异常或返回一个默认值
            log.info("json转化失败{}", obj);
            return "json转化失败";
        }
    }

    /**
     * 将对象转换为JSON字符串。
     *
     * @param obj 要转换的对象
     * @return 转换后的JSON字符串
     * @throws JsonProcessingException 如果转换过程中发生错误
     */
    public String toJsonString(Object obj) throws JsonProcessingException {
        if (obj == null) {
            throw new IllegalArgumentException("The object to be converted cannot be null.");
        }
        return objectMapper.writeValueAsString(obj);
    }

}

